/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionJDBC;

import java.sql.*;
import javax.swing.*;



/**
 *
 * @author Rodrigo Díaz Alfaraz
 */
public class gestorJDBC{
    
    private static gestorJDBC instance= null;

    private Connection miconexion;
    private Statement stSentencias;
    private ResultSet rsDatos;


    private synchronized static void createInstance(){
        if(instance==null){
            instance= new gestorJDBC();
        }
    }

    public static gestorJDBC getInstance(){
	if(instance==null)
            createInstance();

	return instance;
    }
        
        
   public boolean Conectar(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/club de baloncesto";
            miconexion=DriverManager.getConnection(url,"root","");
            return true;
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, "Error al conectar con la base de datos:\n"+e.getMessage());
            return false;
        }
        
    }
       
    public boolean Desconectar(){
	try{ 
            if(rsDatos!=null){
                rsDatos.close();
            }
	}catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Error al desconectar de la BD:\n"+ex.getMessage());
            return false;
	}
	try{ 
	   if(stSentencias!=null){
               stSentencias.close();
			   }
	}catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Error al desconectar de la BD:\n"+ex.getMessage());
            return false;
	}
	try{ 
            if(miconexion!=null){
                  miconexion.close();
             }
	}catch(Exception ex){
		JOptionPane.showMessageDialog(null, "Error al desconectar de la BD:\n"+ex.getMessage());
		return false;
	}
	return true;
    }
    
    
    public ResultSet Consultar(String SQL){

	try {
            stSentencias= miconexion.prepareStatement(SQL);
            return stSentencias.executeQuery (SQL);
	} catch (SQLException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Error al hacer la consulta:\n"+e.getMessage());

	}
        return null;
    }

    public  boolean Modificar(String SQL) {

	// Preparamos la consulta 
        int r=0;
	try{ 
	stSentencias= miconexion.prepareStatement(SQL);
	r=stSentencias.executeUpdate(SQL); //Modifico

	}catch(Exception ex){
	JOptionPane.showMessageDialog(null, "Error al escribir en la base de datos:\n"+ex.getMessage());
	ex.printStackTrace();
	}

        if (r > 0){
            return true;
        }else{
            return false;
        }
		
    }
        
    public  boolean Borrar(String SQL) {

	//Preparamos la consulta 
	int r=0;
	try{ 
            stSentencias= miconexion.prepareStatement(SQL);
            r=stSentencias.executeUpdate(SQL); //Modifico
	}catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Error al borrar en la base de datos:\n"+ex.getMessage());
            ex.printStackTrace();
	}

        if (r > 0){
            return true;
        }else{
            return false;
        }

    }
        
     public  boolean Insertar(String SQL) {

	// Preparamos la consulta 
	int r=0;
	try{ 
            stSentencias= miconexion.prepareStatement(SQL);
            r=stSentencias.executeUpdate(SQL); //Modifico
	}catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Error al insertar en la base de datos:\n"+ex.getMessage());
            ex.printStackTrace();
	}

        if (r > 0){
            return true;
        }else{
            return false;
        }		
    }
    
    
}
